/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.ucue.ptc.gco.ws;

import edu.ucue.ptc.gco.mdl.Ciudad;
import edu.ucue.ptc.gco.ngc.CiudadManagerLocal;
import edu.ucue.ptc.gco.ngc.UsuarioManagerLocal;
import edu.ucue.ptc.gco.util.AtributoInvalidoException;
import edu.ucue.ptc.gco.util.CiudadValidadorException;
import java.sql.SQLDataException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.jws.WebService;
import javax.ejb.Stateless;
import javax.jws.Oneway;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.xml.ws.RequestWrapper;

/**
 *
 * @author Marcelo
 */
@WebService(serviceName = "CiudadWebService")
@Stateless()
public class CiudadWebService {
    @EJB
    private CiudadManagerLocal ejbRef;// Add business logic below. (Right-click in editor and choose
    @EJB
    private UsuarioManagerLocal ejbRefUsuario;
    // "Web Service > Add Operation"

    @WebMethod(operationName = "crearCiudad")    
    public boolean crearCiudad(@WebParam(name = "ciudad") Ciudad ciudad,@WebParam(name = "nombreUsuario") String nombreUsuario,@WebParam(name = "contrasenaUsuario") String contrasenaUsuario) throws AtributoInvalidoException, CiudadValidadorException {        
        ejbRefUsuario.existeUsuario(nombreUsuario, contrasenaUsuario);
        return ejbRef.crearCiudad(ciudad);
        
    }

    @WebMethod(operationName = "actualizarCiudad")
    public boolean actualizarCiudad(@WebParam(name = "ciudad") Ciudad ciudad, @WebParam(name = "nombreUsuario") String nombreUsuario,@WebParam(name = "contrasenaUsuario") String contrasenaUsuario) throws AtributoInvalidoException, CiudadValidadorException{
        ejbRefUsuario.existeUsuario(nombreUsuario, contrasenaUsuario);
        return ejbRef.actualizarCiudad(ciudad);
    }

    @WebMethod(operationName = "eliminarCiudad")
    public boolean eliminarCiudad(@WebParam(name = "ciudad") Ciudad ciudad,@WebParam(name = "nombreUsuario") String nombreUsuario,@WebParam(name = "contrasenaUsuario") String contrasenaUsuario) throws AtributoInvalidoException ,CiudadValidadorException {
        ejbRefUsuario.existeUsuario(nombreUsuario, contrasenaUsuario);
        return ejbRef.eliminarCiudad(ciudad);
    }

    @WebMethod(operationName = "eliminarCiudad_1")
    @RequestWrapper(className = "eliminarCiudad_1")
    public boolean eliminarCiudad(@WebParam(name = "idCiudad") String idCiudad,@WebParam(name = "nombreUsuario") String nombreUsuario,@WebParam(name = "contrasenaUsuario") String contrasenaUsuario) throws AtributoInvalidoException,CiudadValidadorException{
        ejbRefUsuario.existeUsuario(nombreUsuario, contrasenaUsuario);
        return ejbRef.eliminarCiudad(idCiudad);
    }

    @WebMethod(operationName = "eliminarCiudad_2")
    @RequestWrapper(className = "eliminarCiudad_2")
    public boolean eliminarCiudad(@WebParam(name = "idCiudad") Long idCiudad,@WebParam(name = "nombreUsuario") String nombreUsuario,@WebParam(name = "contrasenaUsuario") String contrasenaUsuario) throws AtributoInvalidoException,CiudadValidadorException{
        ejbRefUsuario.existeUsuario(nombreUsuario, contrasenaUsuario);
        return ejbRef.eliminarCiudad(idCiudad);
    }

    @WebMethod(operationName = "obtenerCiudadPorId")
    public Ciudad obtenerCiudadPorId(@WebParam(name = "idCiudad") String idCiudad,@WebParam(name = "nombreUsuario") String nombreUsuario,@WebParam(name = "contrasenaUsuario") String contrasenaUsuario) throws AtributoInvalidoException,CiudadValidadorException {
        ejbRefUsuario.existeUsuario(nombreUsuario, contrasenaUsuario);
        return ejbRef.obtenerCiudadPorId(idCiudad);
    }

    @WebMethod(operationName = "listarCiudades")
    public List<Ciudad> listarCiudades(@WebParam(name = "nombreUsuario") String nombreUsuario,@WebParam(name = "contrasenaUsuario") String contrasenaUsuario) throws AtributoInvalidoException {
        ejbRefUsuario.existeUsuario(nombreUsuario, contrasenaUsuario);
        return ejbRef.listarCiudades();
    }
    
}
